﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TribesPSO
{
    /// <summary>
    /// This interface allows a user to implement their own random number generator
    /// </summary>
    public interface IRandom
    {
        /// <summary>
        /// Returns a nonnegative random number.
        /// </summary>
        /// <returns>A 32-bit signed integer greater than or equal to zero and less than Int.MaxValue.</returns>
        int NextInt();

        /// <summary>
        /// Returns a nonnegative random number less than a specified maximum
        /// </summary>
        /// <param name="maxValue">The exclusive upper bound</param>
        /// <returns>A number greator than or equal to zero and less than maxValue</returns>
        int NextInt(int maxValue);

        /// <summary>
        /// Returns a random number within a specified range
        /// </summary>
        /// <param name="minValue">The minimium inclusive bound</param>
        /// <param name="maxValue">The maximum exclusive bound</param>
        /// <returns>A number greator than or equal to minValue and less than maxValue</returns>
        int NextInt(int minValue, int maxValue);

        /// <summary>
        /// Returns a random number between 0.0 and 1.0.
        /// </summary>
        /// <returns>A double-precision floating point number greater than or equal to 0.0, and less than 1.0.</returns>
        double NextDouble();
    }
}
